package com.lx.sync.provider.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lx.sync.api.dto.SyncDataDTO;
import com.lx.sync.api.dto.PageResult;
import com.lx.sync.provider.entity.SyncData;
import com.lx.sync.provider.service.SyncDataService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/api/sync")
public class DataSyncController {

    @Autowired
    private SyncDataService syncDataService;

    @PostMapping("/data")
    public PageResult<SyncDataDTO> getSyncData(@RequestBody SyncDataDTO syncDataDTO) {
        IPage<SyncData> page = syncDataService.getSyncData(syncDataDTO);
        
        PageResult<SyncDataDTO> result = new PageResult<>();
        result.setTotal(page.getTotal());
        result.setCurrent(page.getCurrent());
        result.setSize(page.getSize());
        result.setPages(page.getPages());
        result.setRecords(page.getRecords().stream()
                .map(this::convertToDTO)
                .collect(Collectors.toList()));
        
        return result;
    }

    @GetMapping("/maxUpdateTime")
    public Long getMaxUpdateTime() {
        return syncDataService.getMaxUpdateTime();
    }

    private SyncDataDTO convertToDTO(SyncData syncData) {
        SyncDataDTO dto = new SyncDataDTO();
        BeanUtils.copyProperties(syncData, dto);
        return dto;
    }
}
